#pragma once

/*
    Copyright (C) 2010, Felix Bytow <drako123@gmx.de>

    This file is part of DBCpp.

    DBCpp is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    DBCpp is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with DBCpp.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef __CHR_CLASSES_HPP__
#define __CHR_CLASSES_HPP__

namespace DBCpp
{
#pragma pack(1)
	struct ChrClasses
	{
		dbc_int ID;
#ifdef DBCpp_STRICT_TRINITY
		dbc_int Unknown1[3];
		dbc_string Name;
		dbc_int Unknown2[39];
#else
		dbc_int Unknown1;
		dbc_int PowerType;
		dbc_int PetType;
		dbc_string NameMale;
		dbc_string NameFemale;
		dbc_string NameNeutral;
		dbc_int InternalName;	// this is a non localized string
		dbc_int Unknown2;
		dbc_int Flags;
		dbc_int CameraID;
		dbc_int AddOn;
#endif
	};
#pragma pack()

	typedef templateDBC<ChrClasses> ChrClassesDBC;
	
#ifndef DBCpp_STRICT_TRINITY
	// pet types for non strict mode
#define CCPT_DEMON	101
#define CCPT_PET	1

	// power types for non strict mode
#define CCPT_MANA		0
#define CCPT_RAGE		1
#define CCPT_FOCUS		2
#define CCPT_ENERGY		3
#define CCPT_HAPPINESS	4
#define CCPT_RUNES		6

	// addons for non strict mode
#define CCAO_CLASSIC	0
#define CCAO_TBC		1
#define CCAO_WOTLK		2

	// flags for non strict mode
#define CCF_CAN_WEAR_PLATE		0x20
#define CCF_CAN_WEAR_MAIL		0x10
#define CCF_CAN_SWITCH_AURA		0x08
#define CCF_CAN_SUMMON_PET		0x04
#define CCF_CAN_WEAR_CLOTH		0x02
#define CCF_CAN_WEAR_LEATHER	0x01
#endif
}

#endif // __CHR_CLASSES_HPP__
